package com.linwen.excise.leetcode;
/*
*给定一个数组，将数组中的元素向右移动 k 个位置，其中 k 是非负数。
* */
/**
 * @author : linwen
 * @date : 下午9:44 2021/4/3
 */
public class _189旋转数组 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6,7};
        int k = 3;
        _189旋转数组.rotate(arr,k);
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+"  ");
        }
    }
    public static void rotate(int[] nums, int k) {
        k = k%nums.length;
        //全部反转
        rever(nums,0,nums.length-1);
        //前部分反转
        rever(nums,0,k-1);
        //后部分反转
        rever(nums,k,nums.length-1);
    }
    public static void rever(int[] nums,int startIndex,int endIndex){
        for (int start = startIndex,end = endIndex; start<end ; start++,end--) {
            int temp = 0;
            temp = nums[end];
            nums[end] = nums[start];
            nums[start] = temp;
        }
    }
}
